package bean;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import org.primefaces.component.datatable.DataTable;
import org.primefaces.model.UploadedFile;

import com.itextpdf.text.log.SysoLogger;

import br.com.biblioteca.interfaces.GerenciadorDeUsuario;
import br.com.biblioteca.model.Usuario;

@ManagedBean
@SessionScoped
public class UsuarioBEAN implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	@EJB
	private GerenciadorDeUsuario gerenciadorDeUsuario;
	
	private Usuario usuario;
	private DataTable datatable;
	private Boolean btnSalvar; 
	private Boolean btnCadastrar; 
	private UploadedFile file;

	public UsuarioBEAN(){
		usuario = new Usuario();
		btnSalvar = false;
		btnCadastrar = true;
	}
	public String cadastrarUsuario() throws IOException {
		int id = gerenciadorDeUsuario.adicionarUsuario(usuario);
		System.out.println(usuario.getId());
		salvaArquivo(id);
		usuario = new Usuario();
		FacesContext context = FacesContext.getCurrentInstance(); 
		context.addMessage(null, new FacesMessage("Successful", "Cadastro realizado com sucesso!! ")); 
		return "";
	}
	
	public String cancelar(){
		btnSalvar = false;
		btnCadastrar = true;
		usuario = new Usuario();
		return "telaAdm.xhtml";
	}
	
	public String salvarUsuario2() throws IOException{
		gerenciadorDeUsuario.alterarUsuario(usuario);
		salvaArquivo(usuario.getId());
		btnSalvar = false;
		btnCadastrar = true;
		usuario = new Usuario();
		//conversa.end();
		return "telaUsuario.xhtml";
	}
	
	public String salvarUsuario() throws IOException{
		gerenciadorDeUsuario.alterarUsuario(usuario);
		salvaArquivo(usuario.getId());
		btnSalvar = false;
		btnCadastrar = true;
		usuario = new Usuario();
		//conversa.end();
		return "telaAdm.xhtml";
	}
	
	public String editarUsuario() {
		//conversa.begin();
		usuario = (Usuario) datatable.getRowData();
		btnSalvar = true;
		btnCadastrar = false;
		return "telaCadUser.xhtml";
	}
	
	public String cancelar2(){
		btnSalvar = false;
		btnCadastrar = true;
		usuario = new Usuario();
		return "telaUsuario.xhtml";
	}
	
	public String btnEditar(){
		LoginBEAN loginBean = (LoginBEAN) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("loginBEAN");
		usuario = loginBean.getUser();
		btnSalvar = true;
		btnCadastrar = false;
		return "telaCadUserAluno.xhtml";
	}
	
	public void salvaArquivo(int nome) throws IOException{
		if (file != null) {
			String caminho = FacesContext.getCurrentInstance().getExternalContext().getRealPath("" + "\\fotos\\usuario\\");
			byte[] conteudo = file.getContents();
			System.out.println(caminho);
			FileOutputStream arquivo = new FileOutputStream(caminho+"\\" + nome + ".jpg");
			arquivo.write(conteudo);
			arquivo.close();	
		}
		
	}
	
	public String deletarUsuario(){
		usuario = (Usuario) datatable.getRowData();
		gerenciadorDeUsuario.deletarUsuario(usuario);
		usuario = new Usuario();
		return "";
	}
	
	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public List<Usuario> getUsuarios() {
		return gerenciadorDeUsuario.getUsuarios();
	}
	
	public DataTable getDatatable() {
		return datatable;
	}

	public void setDatatable(DataTable datatable) {
		this.datatable = datatable;
	}

	public Boolean getBtnSalvar() {
		return btnSalvar;
	}

	public void setBtnSalvar(Boolean btnSalvar) {
		this.btnSalvar = btnSalvar;
	}

	public Boolean getBtnCadastrar() {
		return btnCadastrar;
	}

	public void setBtnCadastrar(Boolean btnCadastrar) {
		this.btnCadastrar = btnCadastrar;
	}
	public UploadedFile getFile() {
		return file;
	}
	public void setFile(UploadedFile file) {
		this.file = file;
	}
	
}
